package cn.zzuzhm.transaction.tx;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service("bookShopService")
public class BookShopServiceImpl implements BookShopService {

	@Autowired
	private BookShopDao bookShopDao;
	
	//添加事务注解
    /*
     * 使用 Propagation 指定事务的传播行为，即当前的事务方法被另外一个事务调用时如何使用事务。
     * 默认取值为 REQUIRED,即使用调用方法的事务
     * REQUIRES_NEW : 事务自己的事务,调用的事务方法的事务被挂起
     */
	@Transactional(propagation=Propagation.REQUIRES_NEW)
	@Override
	public void purchase(int id, String bid) {
		//1.获取书的单价
		double price = bookShopDao.findBookPriceByBid(bid);
		//2.更新书的库存
		bookShopDao.updateBookStock(bid);
		//3.更新用户余额
		bookShopDao.updateUserAccount(id, price);
	}

}
